#ifndef _WX_DISPLAY_IMPL_H_BASE_
#define _WX_DISPLAY_IMPL_H_BASE_
#include "wx/gdicmn.h"

class wxDisplayFactory {
  public:
    wxDisplayFactory() { }
    virtual ~wxDisplayFactory() { }
    virtual wxDisplayImpl *CreateDisplay( unsigned n ) = 0;
    virtual unsigned GetCount() = 0;
    virtual int GetFromPoint( const wxPoint& pt ) = 0;
    virtual int GetFromWindow( wxWindow *window );
};

class wxDisplayImpl {
  public:
    virtual ~wxDisplayImpl() { }
    virtual wxRect GetGeometry() const = 0;
    virtual wxRect GetClientArea() const { return GetGeometry(); }
    virtual wxString GetName() const = 0;
    unsigned GetIndex() const { return m_index; }
    virtual bool IsPrimary() const { return GetIndex() == 0; }
  protected:
    wxDisplayImpl( unsigned n ) : m_index( n ) { }
    const unsigned m_index;
    friend class wxDisplayFactory;
    DECLARE_NO_COPY_CLASS( wxDisplayImpl )
};

class wxDisplayFactorySingle : public wxDisplayFactory {
  public:
    virtual wxDisplayImpl *CreateDisplay( unsigned n );
    virtual unsigned GetCount() { return 1; }
    virtual int GetFromPoint( const wxPoint& pt );
};
#endif
